package ai.peanut.selfbase.modules.menu.service;

import ai.peanut.selfbase.common.domain.DataResult;
import ai.peanut.selfbase.modules.menu.entity.Menu;
import ai.peanut.selfbase.modules.menu.pojo.MenuParams;
import ai.peanut.selfbase.modules.menu.pojo.MenuTreeDto;
import ai.peanut.selfbase.modules.sys.pojo.ZTreeDto;
import com.baomidou.mybatisplus.service.IService;

import java.util.List;

/**
 * <p>
 * 菜单 服务类
 * </p>
 *
 * @author lichong
 * @since 2019-02-15
 */
public interface IMenuService extends IService<Menu> {
    /**
     * 通过userid查找菜单id集合
     * @param userId
     * @return
     */
    List<Long> getMenuIdListByUserId(Long userId);

    /**
     * 获取菜单列表
     * @param params
     * @return
     */
    List<Menu> selectAllByParams(MenuParams params);

    /**
     * 首页菜单树列表
     * @return
     */
    List<MenuTreeDto> selectMenuTreeListForIndex();

    /**
     * 根据角色id查找菜单列表  ztree类型
     * @return
     */
    List<ZTreeDto> selectMenuZTreeListByRoleId(Long roleId);


    /**
     * 根据用户id获取菜单列表
     * @return
     */
    List<Menu> selectMenuListByUserId(Long userId);

    /**
     * 删除
     * @return
     */
    int deleteCurrentAndChildren(MenuParams params);

    /**
     * 更新菜单
     * @param params
     * @return
     */
    DataResult<Boolean> updateMenu(MenuParams params);
    /**
     * 新增菜单
     * @param params
     * @return
     */
     DataResult<Boolean> insertMenu(MenuParams params);

    /**
     * 菜单列表 不包括按钮的所有  ztree类型
     * @return
     */
    List<ZTreeDto> getMenuTreeNotInIconList(Long parentId);
}
